The present invention relates generally to computers, and more particularly to communications between interconnected computer nodes, storage subsystems, and other network devices.
Assessments of server and input/output (I/O) technologies and their respective marketplaces make clear that server-to-server communications and server-to-I/O communications, will be increasingly based on a distributed model. Existing server architectures, based on a shared-address-space model, bus-oriented connections to I/O devices and I/O transactions based on a load/store memory model, have limitations.
A message-passing network system typically can include a plurality of host units interconnected via a network. Host units are intelligent devices attached to the network, used to communicate with other host units. In normal operations, the host unit interacts with I/O devices locally attached or I/O devices attached to remote host units.
FIG. 1 illustrates a general architecture for a message-passing network system. The message-passing network system in FIG. 1 includes a plurality of host units or nodes 100. Each host unit 100 is connected to a network 220 in order to communication with each other. In particular, network 220 includes links and one or more switches for routing requests using its defined link protocol between the host units 100. This defined link protocol can be, for example, in the form of packets or cells. Each host unit 100 can be any type of computer or computing device, such as a server, a personal computer (PC), a mainframe computer, a workstation, etc. and may contain one or more I/O devices, such as a SCSI controller or hard disk drive, a tape drive, a Peripheral Component Interconnect (PCI) compatible device, or other I/O device.
Referring now to FIG. 2, FIG. 2 illustrates the general architecture for network-based host unit 100. Host unit 100 includes a host platform 150 with one or more host processors 151 and an I/O platform (IOP) 110. IOP 110 includes one or more I/O processors 111, I/O devices 180 and other local I/O resources. Each IOP 110 has access to a storage element such as a memory 170. In FIG. 2, a remote request is transmitted using path 120 across a system network such as a system area network (SAN) 165 and is received by a SAN network interface card (SAN NIC) 160. The incoming remote request is initially processed by SAN NIC 160 and then passed across a primary peripheral component interconnect (PCI) bus 140 into memory 170. The remote request is then retrieved by host platform 150 for further processing. Host processor 151 is equipped with a host based network operating system (NOS) used to retrieve the remote request and a local operating system service module (OSM) to process the request.
After processing by the OSM, the remote request is forwarded to IOP 110 via primary PCI bus 140. 1/0 processor 111 includes a hardware device module (HDM) used to further process the request. Afterwards, the remote request is directed across a secondary PCI bus 141 to an I/O controller 190. I/O controller 190 completes the processing of the request by moving data directly from attached I/O device 180, e.g., a hard disk drive, across bus 140 and 141 to memory 170. The data is then gathered by the host platform 150 from memory 170 and sent out to the SAN NIC 160 across the primary PCI bus 140 for delivery. Data retrieved from the processed request is transferred multiple times across the PCI buses to and from host platform 150, memory 170, IOP 110 and I/O controller 190.
This repetitive transfer of data reduces the overall processing efficiency and speed of the network system. Moreover, there are limitations on the number of electrical loads which may be placed on a PCI bus and the physical distance at which I/O devices can be placed.
According to an embodiment of the present invention, a remote request is received from a remote node over a network by a remote aware software driver interface. The remote request is modified with a software converter to emulate a local request which can be processed locally.